package basics.day19.ListDemo;

import java.util.ArrayList;
import java.util.List;

/**
 * List接口派系，继承Collection接口，下面有很多实现的类
 * List接口特点： 有序、索引、可重复值
 * 实现的类：ArrayList LinkedList
 * List接口中的抽象方法，有一部分和他的父亲接口Collection一样
 * 一部分是自己特有的，比如索引
 */
public class Test {
    public static void main(String[] args) {
        // fun_1();
        // fun_2();
        fun_3();
    }

    public static void fun_3() {
        List<Integer> integerList = new ArrayList<Integer>();
        integerList.add(1);
        integerList.add(2);
        integerList.add(3);
        integerList.add(4);
        /*
         * set(int index, E element)
         * 用指定元素替换列表中指定位置的元素（可选操作）。
         * index取值范围不能大于integerList.size()；
         * 返回被即将被设置的元素 这里返回4
         * */
        int i = integerList.set(3, 0); // 4
        System.out.println(i);
        for (Integer ints :
                integerList) {
            System.out.println(ints);
        }
    }

    public static void fun_2() {
        /*
         * remove(int index)
         *  移除列表中指定位置的元素（可选操作）。
         *  返回类型 E
         */
        List<Double> doubleList = new ArrayList<Double>();
        doubleList.add(1.1);
        doubleList.add(2.1);
        doubleList.add(3.1);
        doubleList.add(4.1);
        doubleList.add(5.1);
        // remove 参数为索引值时，删除该索引对应的值，并将被删除的元素return出来 被删除的索引值必须在doubleList.size范围内
        double d = doubleList.remove(2); // 3.1
        System.out.println(d);
        System.out.println(doubleList);
    }

    public static void fun_1() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add(2, "0");
        for (String str :
                list) {
            System.out.println(str);
        }
    }
}
